package com.创建者模式.原型管理;

/**原型模式
 * 存在大量相同或相似对象的创建问题，如果用传统的构造函数来创建对象，会比较复杂且耗时耗资源，用原型模式生成对象就很高效。
 * 实现方式 clone 必须实现 Cloneable类实现 Cloneable方法
	 * 浅克隆：创建一个新对象，新对象的属性和原来对象完全相同，对于非基本类型属性，仍指向原有属性所指向的对象的内存地址。
	 * 深克隆：创建一个新对象，属性中引用的其他对象也会被克隆，不再指向原有对象地址
 *
 * 原型模式通常适用于以下场景
	 * 对象之间相同或相似，即只是个别的几个属性不同的时候。
	 * 创建对象成本较大，例如初始化时间长，占用CPU太多，或者占用网络资源太多等，需要优化资源。
	 * 创建一个对象需要繁琐的数据准备或访问权限等，需要提高性能或者提高安全性。
	 * 系统中大量使用该类对象，且各个调用者都需要给它的属性重新赋值。
 * @author chenhs
 * @date 2020/10/11
 */
public class Prototype implements Cloneable {
	@Override
	protected Object clone() throws CloneNotSupportedException {
		return super.clone();
	}
	
	public static void main(String[] args) throws CloneNotSupportedException {
		Prototype prototype= new Prototype();
		Prototype prototype2 = (Prototype)prototype.clone();
		System.out.println(prototype==prototype2);
		
	}
	
}
